/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Menu;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;
import lector.Lector;

/**
 *
 * @author nexo__000
 */
public class Menu {

    public static final int SALIR = -1;
    public static int iAm;
    public static int iGo;

    public Menu() {
        iAm = 0;
        iGo = 0;
        while ((iAm != 0) || (iGo != SALIR)) {
            //clear();
            printProperMenu(iAm);
            iGo = getValidOption();
            doAction();
        }
    }

    public void clear() {
        char c = '\n';
        int length = 5;
        char[] chars = new char[length];
        Arrays.fill(chars, c);
        System.out.print(String.valueOf(chars));
    }

    public void printProperMenu(int menu) {
        switch (menu) {
            case 0:
                printMenu();
                break;
            case 1:
                printReadMenu();
                break;
            case 2:
                printCreateMenu();
                break;
            case 3:
                printModifyMenu();
                break;
        }
    }

    public static void printMenu() {
        System.out.println("\nMenu ADD.");
        System.out.println("~~~~~~~~");
        System.out.println("1. Leer una ficha");
        System.out.println("2. Esciribr una ficha nueva");
        System.out.println("3. Modificar una ficha");
        System.out.println("0. SALIR");
    }

    public static int getValidOption() {
        Scanner scanner = new Scanner(System.in);
        return scanner.nextInt();
    }

    private static int switchRespuesta(int i, int j) {
        return Integer.parseInt(Integer.toString(i) + Integer.toString(j));
    }

    public static void doAction() {
        //if menu >=<
        switch (switchRespuesta(iAm, iGo)) {
            case 0:
                iAm = 0;
                iGo = -1;
                break;
            //Menu de lectura
            case (1):
                iAm = iGo;
                break;
            //Volver del menu de lectura
            case (10):
                iAm = iGo;
                break;
            //Leer la primera ficha
            case (11): case (12):
                Lector.selectAndRead(pickFile(iGo));
                break;
        }
    }

    public static String pickFile(int file) {
        String result;
        String path = "./examples";

        String files;
        File folder = new File(path);
        File[] listOfFiles = folder.listFiles();
        return listOfFiles[file].getName();
    }

    public static void printReadMenu() {
        System.out.println("\nMenu de lectura AA");
        System.out.println("~~~~~~~~");
        anunciarFichasDisponibles();
//        while (iAm != SALIR) {
//            iAm = getRespuesta();
//        }
//        goTo(1, iAm);
    }

    public void printModifyMenu() {
        System.out.println("\nMenu de modificación");
        System.out.println("~~~~~~~~");
        anunciarFichasDisponibles();
    }

    public void printCreateMenu() {
        System.out.println("\nAsistente de creación de ficha nueva");
        System.out.println("~~~~~~~~");
    }

    public static void anunciarFichasDisponibles() {
        String path = "./examples";

        String files;
        File folder = new File(path);
        File[] listOfFiles = folder.listFiles();
        int j = 0;
        for (int i = 0; i < listOfFiles.length; i++) {
            if ((listOfFiles[i].isFile()) && listOfFiles[i].getName().endsWith(".xml")) {
                j++;
                files = listOfFiles[i].getName();
                System.out.println((j) + ": " + files);
            }
        }
        System.out.println("0. VOLVER");
    }
}
